package com.haixin.security.encoder;

import lombok.extern.slf4j.Slf4j;
import org.springframework.security.crypto.password.PasswordEncoder;


/**
 * 自定义加密方法*/
@Slf4j
public class MyPasswordEncoder implements PasswordEncoder {

    /**
     * 加密方法
     * @param rawPassword
     * @return
     */
    @Override
    public String encode(CharSequence rawPassword) {
        log.info("security 自定义密码加密器运行：{}");
        return rawPassword.toString();
    }

    /**
     * 比较密码明文和密文是否一致
     * @param rawPassword 明文密码，是登陆时传入的密码
     * @param encodedPassword 密文，是数据库中保存的密码
     * @return
     */
    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        log.info("security 自定义密码解析器运行：{}",encodedPassword);

//先使用encode方法，使用相同的加密策略，加密明文，再对比密文
        return encode(rawPassword).equals(encodedPassword);
    }


    /**
     * 是否需要升级密码解析策略，强化密码解析策略*/
    @Override
    public boolean upgradeEncoding(String encodedPassword) {
        return PasswordEncoder.super.upgradeEncoding(encodedPassword);
    }
}
